//package com.zwd.cases.demo.utilstest;
//
///**
// * @Description TODO
// * @Author zhengwd
// * @Date 2022/9/18 10:06
// **/
//import java.security.Key;
//import javax.crypto.Cipher;
//import javax.crypto.KeyGenerator;
//import javax.crypto.SecretKey;
//import javax.crypto.spec.SecretKeySpec;
//import org.apache.commons.codec.binary.Base64;
//
//public class AESUtils {
//    private static final String KEY_ALGORITHM = "AES";
//    private static final String DEFAULT_CIPHER_ALGORITHM = "AES/ECB/PKCS5Padding";
//
//    public AESUtils() {
//    }
//
//    public static byte[] initSecretKey() throws Exception {
//        KeyGenerator kg = KeyGenerator.getInstance("AES");
//        kg.init(128);
//        SecretKey secretKey = kg.generateKey();
//        return secretKey.getEncoded();
//    }
//
//    public static Key toKey(byte[] key) {
//        return new SecretKeySpec(key, "AES");
//    }
//
//    public static String encrypt(String data, String key) throws Exception {
//        return Base64.encodeBase64String(encrypt(data.getBytes("UTF-8"), toKey(key.getBytes()), "AES/ECB/PKCS5Padding"));
//    }
//
//    public static String decrypt(String data, String key) throws Exception {
//        return new String(decrypt(Base64.decodeBase64(data.getBytes()), toKey(key.getBytes()), "AES/ECB/PKCS5Padding"), "utf-8");
//    }
//
//    public static byte[] encrypt(byte[] data, Key key) throws Exception {
//        return encrypt(data, key, "AES/ECB/PKCS5Padding");
//    }
//
//    public static byte[] encrypt(byte[] data, byte[] key) throws Exception {
//        return encrypt(data, toKey(key), "AES/ECB/PKCS5Padding");
//    }
//
//    public static byte[] encrypt(byte[] data, Key key, String cipherAlgorithm) throws Exception {
//        Cipher cipher = Cipher.getInstance(cipherAlgorithm);
//        cipher.init(1, key);
//        return cipher.doFinal(data);
//    }
//
//    public static byte[] decrypt(byte[] data, byte[] key) throws Exception {
//        return decrypt(data, key, "AES/ECB/PKCS5Padding");
//    }
//
//    public static byte[] decrypt(byte[] data, Key key) throws Exception {
//        return decrypt(data, key, "AES/ECB/PKCS5Padding");
//    }
//
//    public static byte[] decrypt(byte[] data, byte[] key, String cipherAlgorithm) throws Exception {
//        Key k = toKey(key);
//        return decrypt(data, k, cipherAlgorithm);
//    }
//
//    public static byte[] decrypt(byte[] data, Key key, String cipherAlgorithm) throws Exception {
//        Cipher cipher = Cipher.getInstance(cipherAlgorithm);
//        cipher.init(2, key);
//        return cipher.doFinal(data);
//    }
//
//    private static String showByteArray(byte[] data) {
//        if (null == data) {
//            return null;
//        } else {
//            StringBuilder sb = new StringBuilder("{");
//            byte[] var2 = data;
//            int var3 = data.length;
//
//            for(int var4 = 0; var4 < var3; ++var4) {
//                byte b = var2[var4];
//                sb.append(b).append(",");
//            }
//
//            sb.deleteCharAt(sb.length() - 1);
//            sb.append("}");
//            return sb.toString();
//        }
//    }
//
//    public static String HexEncrypt(String data, String key) throws Exception {
//        return parseByte2HexStr(encrypt(data.getBytes("UTF-8"), toKey(key.getBytes()), "AES/ECB/PKCS5Padding"));
//    }
//
//    public static String HexDecrypt(String data, String key) throws Exception {
//        return new String(decrypt(parseHexStr2Byte(data), toKey(key.getBytes()), "AES/ECB/PKCS5Padding"), "utf-8");
//    }
//
//    public static String parseByte2HexStr(byte[] buf) {
//        StringBuffer sb = new StringBuffer();
//
//        for(int i = 0; i < buf.length; ++i) {
//            String hex = Integer.toHexString(buf[i] & 255);
//            if (hex.length() == 1) {
//                hex = '0' + hex;
//            }
//
//            sb.append(hex.toUpperCase());
//        }
//
//        return sb.toString();
//    }
//
//    public static byte[] parseHexStr2Byte(String hexStr) {
//        if (hexStr.length() < 1) {
//            return null;
//        } else {
//            byte[] result = new byte[hexStr.length() / 2];
//
//            for(int i = 0; i < hexStr.length() / 2; ++i) {
//                int high = Integer.parseInt(hexStr.substring(i * 2, i * 2 + 1), 16);
//                int low = Integer.parseInt(hexStr.substring(i * 2 + 1, i * 2 + 2), 16);
//                result[i] = (byte)(high * 16 + low);
//            }
//
//            return result;
//        }
//    }
//}
